﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Data;
using System.Data.SqlClient;
using COMPONENT.Library.Conexion;
using COMPONENT.Entity;


namespace COMPONENT.Dao
{
    public class clsDEscenarioDispositivoDAO
    {
        private clsDEscenarioDispositivoDAO()
        {

        }
        private static clsDEscenarioDispositivoDAO instancia = null;
        public static clsDEscenarioDispositivoDAO Instancia
        {
            get
            {
                if (instancia == null)
                {
                    instancia = new clsDEscenarioDispositivoDAO();
                }
                return instancia;
            }
        }


        public List<clsDEscenarioDispositivo> ListaDispositivoxEscenario(int idEscenario) 
        {
            List<clsDEscenarioDispositivo> lst = new List<clsDEscenarioDispositivo>();
            clsDEscenarioDispositivo objDE = null;
            SqlCommand cmd = null;
            SqlDataReader dr = null;

            try
            {
                cmd = new SqlCommand("SP_LISTAR_DISPXESCENARIO_DET_ED", clsConexion.GetConexion());
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@idEscenario", idEscenario);

                dr = cmd.ExecuteReader();

                while (dr.Read())
                {

                    objDE = new clsDEscenarioDispositivo();
                    objDE.ID = Convert.ToInt32(dr["IdDet"]);
                    objDE.Dispositivo = new clsDispositivo();
                    objDE.Dispositivo.ID=Convert.ToInt32(dr["IdDispositivo"]);
                    objDE.Dispositivo.Imagen = dr["Imagen"].ToString();
                    objDE.Nombre = dr["NombreD"].ToString();
                    objDE.Estado = Convert.ToBoolean(dr["EstadoDisponibilidad"]);
                    objDE.Estado = Convert.ToBoolean(dr["EstadoEncendido"]);
                    lst.Add(objDE);
                }
            }
            catch (Exception ex)
            {
                lst = null;
                cmd.Connection.Close();
            }
            finally
            {
                cmd.Connection.Close();
            }
            return lst;
        
        }


        public bool ActualizarEstadoDispositivo(int idDispoDet)
        {

            bool resp = false;
            SqlCommand cmd = null;

            try
            {
                cmd = new SqlCommand("SP_ACTUALIZA_DISPOSITIVO_DET_ED", clsConexion.GetConexion());
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.AddWithValue("@idDispoDet", idDispoDet);
                cmd.ExecuteNonQuery();
                resp = true;
            }
            catch (Exception ex)
            {
                resp = false;
                cmd.Connection.Close();
            }
            finally
            {
                cmd.Connection.Close();
            }
            return resp;
        
        }
    }
}
